#pragma once
#include <atomic>
#include <string>
#include <thread>
#include <iostream>
#include <vector>
#include <mutex>
#include <queue>

#include "stream/horizon/base_osd.h"
#include "stream/base_osd.h"

namespace stream {

struct HBStreamOsdInfo: public StreamOsdBaseInfo
{
  int VpsGrp;
  int vpsChn;
  // std::string formatName;
  // std::string codecProfile;
  int boxColorOK;          // 
  int boxColorNG;          // 
  int textColor;         // 
  int textBGColor;       // 
  RGN_FONT_SIZE_E fontSize;
};


class HBOsdText: public BaseOsd
{
public:
  HBOsdText(HBStreamOsdInfo* osd_ifo, LogInfo* log_info);
  ~HBOsdText();

public:
  int init_params();
  int draw_osd(stream::ImageBlob& buffer, std::vector<OSDDrawInfo>& osdd_ifos);
  int release_params();

private:
  int set_draw_params();
  int release_draw_params();

private:
  RGN_CHN_S chn;
  hb_vio_buffer_t feedback_buf;
  RGN_BITMAP_S bitmapAttr;

};

}